"""
611. 有效三角形的个数
中等
相关标签
premium lock icon
相关企业
给定一个包含非负整数的数组 nums ，返回其中可以组成三角形三条边的三元组个数。

 

示例 1:

输入: nums = [2,2,3,4]
输出: 3
解释:有效的组合是: 
2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3
示例 2:

输入: nums = [4,2,3,4]
输出: 4
 

提示:

1 <= nums.length <= 1000
0 <= nums[i] <= 1000
"""
from typing import List

# 未做出
class Solution:
    def triangleNumber(self, nums: List[int]) -> int:
        nums.sort()
        ans = 0
        for i in range(2,len(nums)):
            c = nums[i]
            l = 0
            r = i-1
            while l<r:
                if nums[l] + nums[r] > c:
                    ans += r-l
                    r-=1
                else:
                    l+=1
        return ans

if __name__ == '__main__':
    print(Solution().triangleNumber([2,2,3,4]))
    print(Solution().triangleNumber([7,0,0,0]))



